//////////////////////////////////////////////////////////////////////////////
//
// This file is part of the Corona game engine.
// For overview and more information on licensing please refer to README.md 
// Home page: https://github.com/coronalabs/corona
// Contact: support@coronalabs.com
//
//////////////////////////////////////////////////////////////////////////////

#pragma once


#ifndef CORONALABS_CORONA_API_EXPORT
#	error This header file cannot be included by an external library.
#endif


namespace CoronaLabs { namespace Corona { namespace WinRT { namespace Interop { namespace Input {

#pragma region Forward Declarations
ref class KeyEventArgs;
ref class TapEventArgs;
ref class TouchEventArgs;
#pragma endregion


/// <summary>Provides input device events such as taps, touches, keys, etc.</summary>
public interface class IInputDeviceServices
{

#pragma region Events
	/// <summary>Raised when a key/button has been pressed down.</summary>
	event Windows::Foundation::EventHandler<KeyEventArgs^>^ ReceivedKeyDown;

	/// <summary>Raised when a key/button has been released.</summary>
	event Windows::Foundation::EventHandler<KeyEventArgs^>^ ReceivedKeyUp;

	/// <summary>Raised when the Corona surface control has been tapped on.</summary>
	event Windows::Foundation::EventHandler<TapEventArgs^>^ ReceivedTap;

	/// <summary>Raised when the Corona surface has received a touch began, moved, ended, or canceled event.</summary>
	event Windows::Foundation::EventHandler<TouchEventArgs^>^ ReceivedTouch;

#pragma endregion


#pragma region Properties/Methods
	/// <summary>
	///  Determines if the input system will provide touch events from the primary pointer/finger
	///  or from multiple pointers/fingers.
	/// </summary>
	/// <value>
	///  <para>Set true if all pointers/fingers on the screen will provide touch events.</para>
	///  <para>
	///   Set false if touch events will only be provided from one pointer/finger. This means that the touch events
	///   generated by any additional pointers/fingers on the screen will be ignored.
	///  </para>
	/// </value>
	property bool MultitouchEnabled { bool get(); void set(bool value); }

#pragma endregion

};

} } } } }	// namespace CoronaLabs::Corona::WinRT::Interop::Input
